<?php
/**
 * 异步处理模块
 *
 * @author wzhzhang
 */
class Async
{
    const KEY = 'asyncList';

    const PER_PROCESS_NUM = 250;

    /**
     * 命令类型 : feed推送
     * 命令参数 : array( 'uId' => int , 'feedId' => int )
     * 
     * @var string
     */
    const COMMAND_TYPE_PUSH_FEED = 'pushFeed';

    /**
     * 命令类型 :  apns通知
     * 命令参数 :  array
     *           (
     *                'uId' => int ,
     *                'aps' => array( 'alert' => string , 'badge' => int ) , //推送内容
     *                'acme1' => array( 'type' => int , 'uId' => int , 'feedId' => int ) ,   //点击后跳转操作 , type:1-Feed流,2-Feed详情,3-好友邀请
     *           )
     * 
     * @var string
     */
    const COMMAND_TYPE_APNS_NOTICE = 'apnsNotice';

    /**
     * 异步调用
     *
     * @param string $command
     * @param array $params
     */
    public static function send( $command , $params = array() )
    {
        $redisInstance = Helper_Redis::getInstance( 'notify' );
        $redisInstance->rpush( self::KEY , array( 'command' => $command , 'params' => $params ) );
    }

    /**
     * 将队列里面的第一个元素推出
     *
     * @param string $key
     */
    public static function popQueue( $key = self::KEY )
    {
        $redisInstance = Helper_Redis::getInstance( 'notify' );
        return $redisInstance->lpop( $key );
    }

}
